package com.whsxt.mapper;

import com.whsxt.domain.Role;
import com.whsxt.dto.RoleDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Role record);

    int insertSelective(Role record);

    Role selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Role record);

    int updateByPrimaryKey(Role record);

    /**
     * 分页查询角色信息
     * @param roleDto
     * @return
     */
    List<Role> selectPage(@Param("query") RoleDto roleDto);

    /**
     * 通过用户的id查询角色的id
     * @param userId
     * @return
     */
    List<Integer> selectRoleIdsByUserId(@Param("userId") Integer userId);

    /**
     * 通过角色id删除角色权限
     * @param roleId
     * @return
     */
    int deletePermsByRoleId(@Param("roleId") Integer roleId);

    int assign(@Param("roleId") Integer roleId, @Param("permIds") Integer[] permIds);

    /**
     * 通过用户id, 查询出所拥有有的角色
     * @param userId
     * @return
     */
    List<Role> selectByUserId(@Param("userId") Integer userId);

    /**
     * 通过角色的标识查询角色的个数
     * @param tag
     * @return
     */
    int selectCountByTag(@Param("tag") String tag);

    /**
     * 通过id的集合批量删除角色数据
     * @param ids
     * @return
     */
    int batchRemove(@Param("ids") List<Integer> ids);
}